<?php
/**
 * @category 	Parameter.php
 * @author 		Sung Hoon, Cho (akdddnet@gmail.com)
 * @since		2008. 11. 11.
 * @license		BSD License
 * @version		0.2
 * 
 * GET, POST 형태로 넘어온 파라메터를 관리합니다.
 * 
 * 수정사항 2011-02-24
 * 	- 거의 새로 만들었음... -_-;;
 * 
 * 고려 해야될것들..
 * 	- 아직 실제로 실무에 적용을 하지 않아서 어떤 변수가 생길지 모름.
 * 	- 생성자에서만 query_string을 전달 받게 했는데... parameter가 GET, POST 이름이 같은 경우...도 발생이 될텐데... 
 */
 	
 	require_once __DIR__.'/../mvc/EB.php';
 	
 	/**
 	 * 파라메터를 vo에 파싱 또는 쿼리스트링을 반환합니다.
 	 */
 	class Parameter
 	{
 		private $method = null;
 		
 		/**
 		 * 생성자
 		 */
 		function __construct($is_get_method = true) {
 			$this->method = ($is_get_method) ? $_GET : $_POST;
 		}
 		
 		
 		/**
 		 * Parameter에 전달된 key의 value값을 리턴시켜줍니다.
 		 * 
 		 * @param string $key			: 조회할 값
 		 * @param string $null_value	: 빈값일 경우 대체할 값
 		 */
 		public function getParameter($key, $null_value = "") {
 			if(!Common::isNullOrEmpty($this->method)) {
 				if(array_key_exists($key, $this->method)) {
 					if(!Common::isNullOrEmpty($this->method[$key]))
 						return $this->method[$key];
 					else 
 						return $null_value;
 				} else 
 					return $null_value;
 			} else 
 				return $null_value;
 		}
 		
 		
 		/**
 		 * GET OR POST로 전달된 것을 EB에 셋팅해줍니다.
 		 * 단 DB Column명과 element name값이 일치해야됩니다.
 		 * @param EB $eb
 		 */
 		public function bindParameter(EB $eb) {
 			if(!Common::isNullOrEmpty($this->method)) {
 				foreach($this->method as $key=>$value) {
 					if(property_exists(get_class($eb), $key)) {
 						$eb->$key = $value;
 					}
 				}
 			}
 			
 			return $eb;
 		}
 		
 		
 		
 		
 		/**
 		 * 
 		 * EB 객체에 존재하는 GET Parameter를 QueryString형태로 리턴시켜줍니다.
 		 * @param EB $eb
 		 * @param boolean $isP
 		 * @param boolean $isSeq
 		 
 		public function getGeneratorQueryString(EB $eb, $isP=false, $isSeq=false)
 		{
 			$rtn = "";
 			if(!Common::isNullOrEmpty($_GET)) {
 				foreach($_GET as $key=>$value) {
 					if(!Common::IsNullOrEmpty($value) && property_exists(get_class($eb), $key)) {
	 					if(!$isP && !strcmp("p", $key))
	 						continue;
	 					else if(!$isSeq && !strcmp("seq", $key))
	 						continue;
	 					else 
	 						$rtn .= $key."=".$value."&amp;";
 					}
 				}
 			}
 			
 			if(!Common::isNullOrEmpty($rtn)) { 
 				$rtn = "?".$rtn;
 				
 				// p, seq 파라메터를 둘 다 사용하지 않을 경우에는 마지막에 붙는 &amp;를 지우고 리턴해줘야됨. 
 				if(!$isP && !$isSeq && strlen($rtn) > 5) {
 					$rtn = substr($rtn, 0, -5);
 				}
 			} else {
 				$rtn = "?";
 			}
 			
 			return $rtn;
 		}
		*/ 		
 		
 		public function getGeneratorQueryString($is_p=false) {
 			$return = '';
 			
 			if(!Common::isNullOrEmpty($_GET)) {
 				foreach($_GET as $key=>$value) {
 					// 빈값이 아닐때 쿼리 스트링에 추가
 					if(!Common::isNullOrEmpty($value)) {
 						if(!$is_p && !strcmp("p", $key)) {
 							continue;
 						} else {
 							$return .= $key."=".$value."&amp;";
 						}
 					}
 				}
 			}
 			
 			if(!Common::isNullOrEmpty($return)) {
 				$return = '?'.$return;
 					
 				/*
 				// p, seq 파라메터를 둘 다 사용하지 않을 경우에는 마지막에 붙는 &amp;를 지우고 리턴해줘야됨.
 				if(!$is_p && strlen($return) > 5) {
 					$return = substr($return, 0, -5);
 				}
 				*/
 			} else {
 				$return = "?";
 			}
 			
 			
 			return $return;
 		}
 	}
?>
